import gnupg

from django.conf import settings


class GnuPG:
    """
    A handy singleton to use when handling encrypted files.
    """

    gpg = gnupg.GPG(gnupghome=settings.GNUPG_HOME)

    @classmethod
    def decrypted(cls, file_handle, passphrase=None):

        if not passphrase:
            passphrase = settings.PASSPHRASE

        return cls.gpg.decrypt_file(file_handle, passphrase=passphrase).data

    @classmethod
    def encrypted(cls, file_handle, passphrase=None):

        if not passphrase:
            passphrase = settings.PASSPHRASE

        return cls.gpg.encrypt_file(
            file_handle,
            recipients=None,
            passphrase=passphrase,
            symmetric=True
        ).data
